<?php

namespace app\netdisk\model;

use think\Model;
use think\model\concern\SoftDelete;

use think\facade\Log;

class QueryLog extends Model
{
    use SoftDelete;
    protected $autoWriteTimestamp = true;
    protected $table = 'disk_query_log';

    ######################################################################################################################
    # 获取器、修改器、搜索器
    ######################################################################################################################

    public function getUpdateTimeAttr($value)
    {
        return date('m-d H:i', strtotime($value));
	}

    ######################################################################################################################
    # 
    ######################################################################################################################

    // 获取单条数据
    public static function findData($select)
    {
        return self::where($select)->find();
    }

    // 查询单条数据
    public static function checkLog($userId, $link)
    {
        $res = self::where('user_id', $userId)->where('share_link|share_code', $link)->find();
        if(is_null($res)) {
            return false;
        } else {
            $res->update_time = date('Y-m-d H:i:s');
            $res->save();
            return $res->toArray();
        }
    }

    // 用户今日已查询次数
    public static function getHitToday($userId)
    {
        $hitToday = self::where('user_id', $userId)->whereDay('create_time')->removeOption('soft_delete')->count();
        $queryTimes = config('know.maxQueryDay') - $hitToday;
        $hit = $queryTimes >= 0 ? $queryTimes : 0;

        return $hit;
    }

    // 删除记录
    public static function del($userId, $logId)
    {
        return self::where('id', $logId)->where('user_id', $userId)->useSoftDelete('delete_time', date('Y-m-d H:i:s'))->delete();
    }

    // 查询数据列表
    public static function getHistoryList($userId)
    {
        $model = self::where('user_id', $userId)->field('id, share_link, share_code, share_pass, update_time');

        $hit = self::getHitToday($userId);
        $count = $model->count();
        $list = $model->order('update_time desc')->select();
        // foreach($list as $key => $value){
            // Log::write($list[$key]['update_time'], 'info');
            // $list[$key]['update_time'] = "2020-05-20";
            // $list[$key]->update_time = date('m-d', strtotime($value->update_time));
        // }

        return compact('count', 'list', 'hit');
    }
}
